package routes

import (
	"fabric-go-sdk/controller"
	"fmt"
	"github.com/gin-gonic/gin"
)

func WebStart() {
	r := gin.Default()
	// 跨域中间件
	//r.Use(tools.Cors())
	// token中间件
	//r.Use(tools.CheckJWT())

	// 路由组
	web := r.Group("/web")
	{
		//登录
		web.POST("/admin/acl/index/login", controller.Login)
		//登出
		web.POST("/admin/acl/index/logout", controller.Logout)
		//获取用户头像
		// web.GET("/admin/acl/index/avatar", controller.GetAvatar)
		// 获取用户信息
		web.GET("/admin/acl/index/info", controller.GetUserInfo)
	}
	ledger := r.Group("/ledger")
	{
		// 获取区块、配置信息
		ledger.GET("/blockInfo", controller.GetBlockchainInfo)
		// 查询区块交易信息
		ledger.GET("/getBlock", controller.GetBlockInfo)
		// 查询最新五个区块信息
		ledger.GET("/latestBlock", controller.GetLastFiveBlock)
		// 查询最新的交易信息
		ledger.GET("/latestTx", controller.GetLatestTx)
		// 区块数据列表
		ledger.GET("/block/:page/:limit", controller.GetBlocksPage)
		// 交易数据列表
		ledger.GET("/transaction/:page/:limit", controller.GetTxsPage)
	}
	channel := r.Group("/channel")
	{
		// 调用链码
		channel.POST("/invokeCC", controller.InvokeCC)
		// 查询链码
		channel.POST("/queryCC", controller.QueryCC)
		// 初始化链码
		channel.POST("/InitCC", controller.InitCC)
	}
	// 链码生命周期
	chaincodeLife := r.Group("/chaincodeLife")
	{
		// 创建、打包链码
		chaincodeLife.POST("/newCC", controller.CreatChaincode)
		// 安装链码
		chaincodeLife.POST("/installCC", controller.InstallCC)
		// 批准链码
		chaincodeLife.POST("/approveCC", controller.ApproveCC)
		// 查询链码批准情况
		chaincodeLife.GET("/checkApproveCC", controller.CheckCCCommitReadiness)
		// 提交链码
		chaincodeLife.POST("/commitCC", controller.CommitCC)
		// 查询链码提交情况
		chaincodeLife.GET("/queryCommitCC", controller.QueryCommittedCC)
	}
	// 创建通道
	newchannel := r.Group("/newchannel")
	{
		// 创建通道
		newchannel.POST("/creatChannel", controller.CreatChannel)
		// 节点加入通道
		newchannel.POST("/joinChannel", controller.PeerJoinChannel)
	}

	//监听区块事件
	//r.GET("/blockEvent", func(c *gin.Context) {
	//	controller.BlockEvent(c, ws.BlockHub)
	//})
	//监听链码事件
	//r.GET("/txEvent", func(c *gin.Context) {
	//	controller.TxEvent(c, ws.TxHub)
	//})

	//启动服务监听9091端口
	err := r.Run(":9092")
	if err != nil {
		fmt.Println("Web Start err :", err.Error())
		return
	}
}
